To accommodate the ever-increasing storage needs of users and applications, the capacity of storage systems is constantly growing. In light of this, the scalability of storage systems in terms of performance is critical not only for existing applications, but also for new types of applications that expect improved latency and throughput. Caching on DRAM memory has traditionally been one of the most straightforward ways of improving the performance of storage systems, both in terms of latency and throughput. By increasing the size of the DRAM cache as one adds more disks, one can maintain the same performance over capacity ratio. However, DRAM caches cannot scale in terms of size: Not only does DRAM memory require a lot of power even when it is idle, but also it is volatile by nature, meaning that it has to be backed by batteries to protect against power failures.